有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java数组似乎在不直接修改的情况下更改值

因此,我试图用java(特别是处理)编写一个mergesort程序,一帧一帧地逐步完成这个过程。当它在1帧内通过循环对其进行排序时,它似乎工作得很好(我没有对它进行广泛测试,因为这不是我的目标),但在对其进行必要的更改以使其正常工作后,它似乎不想正常工作

我还没有试过很多,因为我完全不知道是什么导致了这一点

merge();

if (i1 < arr.length) {
  if (i2 < arr.length) {
    if (i3 <= i2 + i1) {
      i3++;
    } else {
      i2 += i1 * 2;
      l = i2 + 0;
      r = i2 + i1;
    }
  } else {
    i1 *= 2;
    i2 = 0;
    i3 = 0;
    l = 0;
    r = i1 + 0;

    arr = w.clone();
  }
} else {
  noLoop();
}

void merge() {
  int lMax = i2 + i1;
  int rMax = i2 + i1 * 2;

  if (r < arr.length - 1 && l < arr.length - 1) {
    if ((l <= lMax) && (r >= rMax || arr[l] <= arr[r])) {
      float[] t = arr.clone();
      w[i3] = t[l];
      arr = t.clone();
      l++;
    } else {
      float[] t = arr.clone();
      println(arr[r], t[r], w[i3]);
      w[i3] = t[r];
      println(arr[r], t[r], w[i3]);
      arr = t.clone();
      r++;
      println();
    }
  }
}

它应该只对arr的元素进行排序,但似乎在arr[r] < arr[l]的任何时候都会复制它们


共 (1) 个答案

  1. # 1 楼答案

    在我的工作中,我经常遇到这种类型的问题,而且(如果您使用的是Eclipse,至少我使用的是Eclipse),我要做的是进入调试模式,在有问题的部分中的每一行代码上放置一个断点,并仔细观察变量,相应地更改代码。希望这能有所帮助